﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using LibreriaArticulos;

namespace LibreriaGestion
{
	public class GestorStocks : IGestorStocks
	{
		Dictionary<IArticulo, int> stockArticulos;

		public GestorStocks()
		{
			stockArticulos = new Dictionary<IArticulo, int>();
		}

		#region Miembros de IGestorStocks

		public void incrementaStock(IArticulo articulo, int cantidad)
		{
			if (!stockArticulos.Keys.Contains(articulo))
				stockArticulos.Add(articulo, cantidad);

			else
				stockArticulos[articulo] += cantidad;
		}

		public void reduceStock(IArticulo articulo, int cantidad)
		{
			if (!stockArticulos.Keys.Contains(articulo))
				stockArticulos.Add(articulo, -cantidad);
			else
				stockArticulos[articulo] -= cantidad;
		}

		public int getStock(IArticulo articulo)
		{
			if (!stockArticulos.Keys.Contains(articulo))
				stockArticulos.Add(articulo, 0);

			return stockArticulos[articulo];
		}

		#endregion

		#region Miembros de IGestorArticulo

		public void eliminaArticulo(LibreriaArticulos.IArticulo articulo)
		{
			if (stockArticulos.Keys.Contains(articulo))
				stockArticulos.Remove(articulo);

		}

		public void addArticulo(LibreriaArticulos.IArticulo articulo)
		{
			stockArticulos.Add(articulo, 0);
		}

		#endregion

		/// <summary>
		/// Creado para dar soporte a los tests para añadir y eliminar artículos de los diccionarios
		/// </summary>
		/// <param name="articulo">Articulo para el que queremos saber si ya está añadido</param>
		/// <returns>Cierto si existe, falso si no existe</returns>
		public bool existeArticulo(IArticulo articulo)
		{
			return stockArticulos.ContainsKey(articulo);
		}
	}
}
